The Internet is arranged so that a computing device can have a unique name or address by which it can be identified. When data is transmitted over the Internet between computing devices, it is generally broken down into smaller groupings called “packets”. In addition to the data which is being transmitted, the packets will normally include important transmission information such as the sender's identity or Internet Packet Address (IP Address), the addressee or intended recipient's IP Address, the actual data (or data request), and so on.
Each packet transmitted from a user's computing device will typically travel through several network devices such as hubs, switches, and routers. If a user's computing device is part of a local area network, the packet will generally travel along a cable until it arrives at a hub to which the cable is connected. The hub or “repeater” as it is sometimes called, will retransmit the packet to another network device (such as a switch) until the packet reaches a router. The router examines the information transmitted with the packet and determines the best way for it to get to its destination.
Once the router has determined how the packet is to be sent, it selects another router at some other location and transmits the message to the router in the direction the packet is intended to travel. For example, if the message is going from New York to California, the router might send the packet to a router located in an intermediate city such as Chicago along a high speed communication channel. Once there, another router will determine a subsequent router to which the packet will be sent next. In this way, the packet is transmitted from router to router until the packet has nearly reached its destination.
When the packet is near to its destination, it is eventually passed to a local hub, which retransmits the message to its intended recipient computing device. The recipient computing device then reassembles the packet with other parts of the original message to create the complete set of transmitted data. However, when a particular network device reaches maximum capacity due to some overload condition, packets are typically dropped by the network device, i.e., the packets are discarded and not forwarded to their destination.
In wireless networks, communicated data packets are typically queued up at a link (network device) in a channel established between a sender and a destination when there is a loss of connectivity. Bad channel conditions, such as cellular reselection, cellular hand offs and General Packet Radio Service (GPRS) suspend resume mechanisms, can cause a channel to lose connectivity for a significant period of time. However, once connectivity is re-established and the channel is ready for transmission again, the queued up data packets at the network device are transmitted normally over the wireless network towards their destination.
Typically, most network devices in a channel established in a wireless network can queue up communicated data packets, e.g., mobile devices, base stations and routers. Unfortunately, this type of link behavior can cause problems with packet based protocols such as Transmission Control Protocol (TCP) and Stream Control Transmission Protocol (SCTP). For more detailed information regarding these protocols see Request For Comments (RFC) 2018, 2581, 2883, 2960, and 2988, which are herein incorporated by reference.
The TCP and SCTP protocols are designed to guarantee delivery of data packets and also guarantee that the packets will be delivered in the same order in which they were sent. When a sender employing either of these protocols does not receive an acknowledgement for a particular packet after a round trip timeout (RTO) has expired, the protocol will undergo a slow start mechanism whereby its congestion window is reduced to one packet. Also, the protocol makes the assumption that all data packets (or their acknowledgements) during the RTO period of time were lost. To recover from this perceived “loss of packets” and to avoid further congestion in the network, the protocol will slow start by resending the first unacknowledged data packet over the network towards the destination.
However, when an RTO expires for data packets sent over a wireless network, the data packets and/or their acknowledgements may not be lost. Instead, they may be queued up at some link in the channel between the sender and the destination. Consequently, in the past, a wireless network might become congested due to the sending and resending of copies of the same data packets to a destination, i.e. the initial queued up data packet and the resent copy of the data packet. In addition, at the sender, the protocol would often increase its window size to compensate for the delayed acknowledgements, which in turn could cause further congestion on a wireless network. It is with respect to these considerations and others that the present invention has been made.